package netty.demo_04_Buf;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.util.CharsetUtil;

/**
 * Netty - Buf 的常用 API
 *
 * @author chenyuan
 * @date 2020/11/9 15:31
 */
public class ByteBuf02 {
	public static void main(String[] args) {
		// 用其他方式创建 Buf ,参数 ：（存入 Buf 的文本 ， 字符编码）
		ByteBuf byteBuf = Unpooled.copiedBuffer("【呵呵】：Hello,Buf", CharsetUtil.UTF_8);
		// 使用相关的 API
		if (byteBuf.hasArray()) { // 如果有内容
			// 获得 buf 中的数据
			byte[] bytes = byteBuf.array();
			// 转成 String 输出
			System.out.println(new String(bytes, CharsetUtil.UTF_8));
			// 查看 ByteBuf 中真正存的是什么
			System.out.println("ByteBuf : " + byteBuf);
			// 数组的偏移量
			System.out.println("偏移量 ：" + byteBuf.arrayOffset());
			System.out.println("WriterIndex: " + byteBuf.writerIndex());
			byteBuf.getByte(0);
			System.out.println("getByte 后 ：ReaderIndex: " + byteBuf.readerIndex() + "，可读取的字节数 ：" + byteBuf.readableBytes());
			byteBuf.readByte();
			System.out.println("readByte 后 ：ReaderIndex: " + byteBuf.readerIndex() + "，可读取的字节数 ：" + byteBuf.readableBytes());
			// 读取某一段,参数：(起点，终点，字符集编码)
			System.out.println(byteBuf.getCharSequence(9, 24, CharsetUtil.UTF_8));
		}
	}
}
